package com.hb.trade.server.project.file.service;

import cn.hutool.json.JSONObject;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.hb.core.pojo.project.file.dto.BidFileInfoDTO;
import com.hb.core.pojo.project.file.entity.BidFileInfo;

import java.util.List;

/**
 * <p>
 * 招标文件 服务类
 * </p>
 *
 * @author zhongdl
 * @since 2021-09-16
 */
public interface BidFileInfoService extends IService<BidFileInfo> {
    /**
     * 根据项目id查询招标文件列表
     *
     * @param projectId
     * @return
     */
    List<JSONObject> findBidFileInfoListByProjectId(Long projectId);

    /**
     * 根据标段id查询当前的招标文件发布状态
     *
     * @param sectionId
     * @return
     */
    boolean findBidFileInfoTypeBySectionId(Long sectionId);

    /**
     * 查询指定项目ID的招标文件列表
     *
     * @param bidFileInfoDTO
     * @return
     * @update zhaojk
     */
    Page<BidFileInfo> pageFilesByProjectId(BidFileInfoDTO bidFileInfoDTO);
   /**
    *
    * @Description:查询指定项目ID的招标文件列表
    * @Author: zhongdl
    * @Date:2022/1/17 9:11
    * @param bidFileInfoDTO:
    * @return: {@link List< BidFileInfo> }
    **/
    List<BidFileInfo> listFilesByProjectId(BidFileInfoDTO bidFileInfoDTO);

    /**
     * 保存招标文件
     *
     * @param bidFileInfo
     * @return
     * @update zhaojk
     */
    boolean saveBidFileInfo(BidFileInfoDTO bidFileInfo);

    /**
     * 更新指定招标文件已经关联的标段信息
     *
     * @param fileId
     */
    void refreshSectionWithBidFile(Long fileId);

    /**
     * 查询招标文件详情
     * 获取所有与该招标文件的标段将信息返回
     *
     * @param fileId
     * @return
     * @update zhaojk
     */
    BidFileInfoDTO getBidFileDetail(Long fileId);


    /**
     * 变更流程
     * @author tian
     * @date 2022-4-13 13:13
     * @param bidFileInfoDTO
     * @return java.lang.String
     */
    String changeProcess(BidFileInfoDTO bidFileInfoDTO);


    /**
     * 查询招标项目是否已创建了流程
     * @author tian
     * @date 2022-4-19 13:35
     * @param bidFileInfoDTO
     * @return org.fzzn.core.model.msg.Message<java.lang.String>
     */
    Integer selectSimpleOrStandard(BidFileInfoDTO bidFileInfoDTO);


    /**
     * 查询招标项目是否存在已发布的招标文件
     * @author tian
     * @date 2022-4-19 14:49
     * @param bidFileInfoDTO
     * @return java.lang.Integer
     */
    Integer selectReleaseFlag(BidFileInfoDTO bidFileInfoDTO);

    /**
     * @Description: 根据公告ID查询已发布的招标文件
     *
     * @author yuezheng
     * @param noticeId
     * @return org.fzzn.core.model.msg.Message<java.util.List<com.hb.core.pojo.project.file.dto.BidFileInfoDTO>>
     * @date 2022/6/23 14:18
     */
    List<BidFileInfoDTO> selectReleaseBidFileByNoticeId(Long noticeId);
}
